// 字典数据
let dict_data = {
  area: [
    {
      label: '郎镇'
    }, {
      label: '仲达镇'
    }, {
      label: '洞嘎镇'
    }, {
      label: '拉多乡'
    }, {
      label: '金东乡'
    }, {
      label: '登木乡'
    },
  ],
  orgType: [
    // 平台单位、服务商、使用单位、监管单位
    {
      label: '监管单位'
    }, {
      label: '污水处理厂'
    }, {
      label: '运输单位'
    }, {
      label: '医疗机构'
    }, {
      label: '垃圾处置场'
    }, {
      label: '检测单位'
    }, {
      label: '其他'
    }
  ],
  licenseTypes: [
    {
      label: '排污许可证'
    }
  ]
}

/**
 * 此处使用Object.create(null)而不使用{}的一点说明
 * Object.create(null)创建的对象是纯净的不继承Object的所有方法而只登记用户添加的新方法或者内容
 * 而直接使用{}会继承Object的方法造成性能上的一点点损失
 * Object.create()此方法也可以继承object的方法
 * 例: Object.creat(Object.prototype,{}) 前面的Object.prototype是继承原型链上的属性 后面的{}是添加在新创建的对象上属性此处可以配置
 */
const Dict = Object.create(null)
// const dict_key = 'COMMON_DICT_KEY'
// import {loadDict} from '@/api'
// 给vue注入插件

Dict.install = (Vue) => {
    let dict_map = {}
    for (let key in dict_data) {
      let map = {}
      for (let i = 0; i< dict_data[key].length; i++) {
        map[dict_data[key][i].value] = dict_data[key][i]
      }
      dict_map[key] = map
    }
   
    let get = (key) => {
      return dict_data[key]
    }
    let getValue = (key, value) => {
      let data = dict_map[key]
      if (!data) {
        return value
      }
      if (value && value.indexOf(',') !== -1) {
          let keys = value.split(',');
          return keys.map(d =>  data[d]).join(',');
      } else {
          return data[value];
      }
    }
    let obj = {
      get: get,
      value: getValue
    }
    // 注入实例方法
    Vue.prototype.$dict = obj
    // const load = () => {
    //     loadDict().then(res => {
    //         console.log(res);
    //         if (res.code === 20000) {
    //             localStorage.setItem(dict_key, JSON.stringify(res.data))
    //         }
    //     })
    // }
    // 加载字典
    // load()
    // Vue.prototype.$loadDict = load
}

export default Dict
